package com.aaa.vegetablemarketexpress.dao;

import com.aaa.vegetablemarketexpress.entity.ShoppingCart;

import java.util.List;
import java.util.Map;

/**
 * @FileName: ShoppingCart
 * @Description:
 * @Author: 张钰哲
 * @CreateTime: 2025/9/17 20:34
 * @Version: 1.0.0
 */
public interface ShoppingCartDao {
    /**
     * 插入购物车记录
     * @param shoppingCart 购物车实体
     */
    void insertCart(ShoppingCart shoppingCart);

    /**
     * 查询用户购物车中某商品是否已存在
     * @param param 包含 userId 和 productId 的参数Map
     * @return 存在返回大于0的数，否则返回0
     */
    Integer checkCartExists(Map<String, Object> param);

    /**
     * 更新购物车商品数量（若已存在）
     * @param param 包含 userId、productId、productCount 的参数Map
     */
    void updateCartCount(Map<String, Object> param);

    /**
     * 查询用户购物车列表
     * @param userId 用户ID
     * @return 购物车列表
     */
    List<ShoppingCart> getCartList(Long userId);
    /**
     * 更新购物车中单个商品的数量
     * @param param 包含 cartId 和 productCount 的 Map
     */
    void updateCartItemCount(Map<String, Object> param);
    /**
     * 删除购物车中的单个商品
     * @param cartId 购物车ID
     */
    void deleteCartItem(Long cartId);

    /**
     * 清空指定用户的购物车
     * @param userId 用户ID
     */
    void clearCart(Long userId);
    /**
     * 查询用户购物车商品总数量
     * @param userId 用户ID
     * @return 商品总数量
     */
    Integer getCartItemCount(Long userId);
}
